Fix CSD check for Win32
authorManuel Bachmann <tarnyko@tarnyko.net>
Wed, 27 Nov 2013 10:14:16 +0000 (11:14 +0100)
committerManuel Bachmann <tarnyko@tarnyko.net>
Wed, 27 Nov 2013 10:24:12 +0000 (11:24 +0100)
Win32 does not have alpha channel currently ; fix the check
for this, so trying to enable CSDs on this platform will
not "succeed" and crash the app anymore.

Partially fixes gtk3-widget-factory.

gtk/gtkwindow.c

index 056260f337d279a9900d3ca23d73c6aaa82226b5..29c3fccac7cc3b0c87fd9764e4b3d13f0b5abf84 100644 (file)
 #include "x11/gdkx.h"
 #endif
 
+#ifdef GDK_WINDOWING_WIN32
+#include "win32/gdkwin32.h"
+#endif
+
 #ifdef GDK_WINDOWING_WAYLAND
 #include "wayland/gdkwayland.h"
 #endif
@@ -3507,6 +3511,21 @@ gdk_window_supports_csd (GtkWindow *window)
     }
 #endif
 
+#ifdef GDK_WINDOWING_WIN32
+  if (GDK_IS_WIN32_DISPLAY (gtk_widget_get_display (widget)))
+    {
+      GdkScreen *screen;
+      GdkVisual *visual;
+
+      screen = gtk_widget_get_screen (widget);
+
+      /* We need a visual with alpha */
+      visual = gdk_screen_get_rgba_visual (screen);
+      if (!visual)
+        return FALSE;
+    }
+#endif
+
   return TRUE;
 }